package atomdemo3;

import java.util.concurrent.atomic.AtomicInteger;

/**
 * Created by L.jp
 * Description:
 * User: 86189
 * Date: 2022-08-08
 * Time: 10:18
 */
public class MyAtomIntergerDemo2 {
    // int get(): 获取值
    // int getAndIncrement(): 以原子方式将当前值加1，注意，这里返回的是自增前的值。
    // int incrementAndGet(): 以原子方式将当前值加1，注意，这里返回的是自增后的值。
    // int addAndGet(int data): 以原子方式将参数与对象中的值相加，并返回结果。
    // int getAndSet(int value): 以原子方式设置为newValue的值，并返回旧值。
    
    public static void main(String[] args) {
        AtomicInteger ac1=new AtomicInteger(12);
       // System.out.println(ac1.get());
        
        AtomicInteger ac2=new AtomicInteger(10);
        int ret=ac2.incrementAndGet(); //前置++
//        System.out.println(ac2.get());
//        System.out.println(ret);
        
        AtomicInteger ac3=new AtomicInteger(10);
        int ret2=ac3.getAndIncrement(); //后置++
//        System.out.println(ac3.get());
//        System.out.println(ret2);
    
        AtomicInteger ac4=new AtomicInteger(10);
        //以原子方式将给定值添加到当前值。
        //返回值：前一个值
        int ret3=ac4.getAndAdd(20);
        System.out.println(ac4.get());  //添加后的值
        System.out.println(ret3);//前一个值
    
        AtomicInteger ac5=new AtomicInteger(15);
        //以原子方式将给定值添加到当前值。
        //返回值：更新的值
        int ret4=ac5.addAndGet(15);
//        System.out.println(ac5.get());
//        System.out.println(ret4);
        
        AtomicInteger ac6=new AtomicInteger(20);
        //以原子方式设置为给定值并返回旧值。
        //参形：newValue – 新值
        //返回值：前一个值
        int ret5=ac6.getAndSet(10);
        System.out.println(ret5);
        System.out.println(ac6.get());
        
    }

}
